<?php
require_once("../Datos/Selector.php");
require_once("../Datos/SubConsulta.php");
require_once("../Datos/Tablas/Tbl_ec_ventas.php");
require_once("../Datos/Selectores/Sel_Pedidos_Ventas.php");
require_once("../Datos/Selectores/Sel_Stock_Venta.php");
require_once("../Datos/Selectores/Sel_Vencimientos_Pagos.php");
require_once("../Datos/Selectores/Sel_Liquidaciones_No_Guion.php");

class Sel_Ventas extends Selector{

	function Sel_Ventas(&$conexion, $articulo=''){
		$this->Selector($conexion);

		$this->Nombre = "Ventas";
		$this->estTablaBase(new Tbl_ec_ventas($conexion, ''));
		
		$relacionada = new SubConsulta(new Sel_Pedidos($conexion), '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ven_pedido'), $this->obtCampoRelacionado('Pedidos', 'Pedido'), '=');
		
		$relacionada = new SubConsulta(new Sel_Stock_Venta($conexion, $articulo), '');
		$this->agregarTablaRelacionada($relacionada, 'INNER JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ven_id'), $this->obtCampoRelacionado('Stock', 'ven_id'), '=');
		
		$relacionada = new SubConsulta(new Sel_Vencimientos_Pagos($conexion, $articulo), 'Vencimientos');
		$this->agregarTablaRelacionada($relacionada, 'LEFT JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ven_id'), $this->obtCampoRelacionado('Vencimientos', 'venc_venta'), '=');
		
		$relacionada = new SubConsulta(new Sel_Liquidaciones($conexion, $articulo), 'Liquidaciones');
		$this->agregarTablaRelacionada($relacionada, 'LEFT JOIN');
		$this->agregarCampoJunta($this->tablaBase->obtCampo('ven_id'), $this->obtCampoRelacionado('Liquidaciones', 'Venta'), '=');
		
		$campo = $this->tablaBase->obtCampo('ven_id');
		$campo->estAlias("ven_id");
		$campo->estEsGrupo(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Pedido');
		$campo->estAlias('Pedido');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'ped_cliente');
		$campo->estAlias('id_Cliente');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Fecha');
		$campo->estAlias('Fecha_Pedido');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
				
		$campo = $this->tablaBase->obtCampo('ven_fecha');
		$campo->estAlias('Fecha_Venta');
		$this->agregarCampoVisible($campo);	
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Localidad');
		$campo->estAlias("Localidad");
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Cliente');
		$campo->estAlias("Cliente");
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Articulo');
		//$campo->estAlias("Producto");
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);	
		
		$campo = $this->obtCampoRelacionado('Stock', 'Articulo');
		$campo->estAlias("Stock");
		$campo->estOcultoListado(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
				
		$campo = $this->obtCampoRelacionado('Pedidos', 'Monto');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'id_Vendedor');
		$campo->estAlias('id_Vendedor');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'id_Cobrador');
		$campo->estAlias('id_Cobrador');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'cli_localidad');
		$campo->estAlias('cli_localidad');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Cantidad_Pagos');
		$campo->estAlias("Cuotas");
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Forma_Pago');
		$campo->estAlias("Pago");
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Stock', 'stock_costo');
		$campo->estAlias("stock_costo");
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);

		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Vendedor');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ven_com_vendedor');
		$campo->estAlias('Com_Vendedor');
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);

		$campo = $this->obtCampoRelacionado('Pedidos', 'Cobrador');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->obtCampoRelacionado('Pedidos', 'Efectividad');
		$campo->estEsBase(1);
		$campo->estEsReadOnly(1);
		$this->agregarCampoVisible($campo);
		
		$campo = $this->tablaBase->obtCampo('ven_com_cobrador');
		$campo->estAlias('Com_Cobrador');
		$campo->estOcultoListado(1);
		$this->agregarCampoVisible($campo);
		
		$tabla = $this->obtTabla('Vencimientos');
		$funcion = new Funcion('venc_pagos', 'Count', $tabla);
		$campo = $this->obtCampoRelacionado('Vencimientos', 'venc_id');
		$funcion->agregarCampo($campo);		
		$this->agregarCampoVisible($funcion);
		
		$tabla = $this->obtTabla('Liquidaciones');
		$funcion = new Funcion('monto_a_liquidar', '', $tabla);
		$funcion->agregarExpresion("(Pedidos.Monto * ec_ventas.ven_com_cobrador / 100) + (Pedidos.Monto * ec_ventas.ven_com_vendedor / 100)");		
		$this->agregarCampoVisible($funcion);
		
		$tabla = $this->obtTabla('Liquidaciones');
		$funcion = new Funcion('monto_liquidado', '', $tabla);
		$funcion->agregarExpresion("IF(Sum(Liquidaciones.liq_monto), Sum(Liquidaciones.liq_monto), 0)");		
		$this->agregarCampoVisible($funcion);
		
		$funcion = new Funcion('venc_monto_pago', '', $tabla);
		$funcion->agregarExpresion("FORMAT((Count(Vencimientos.venc_id) * Pedidos.Monto / Pedidos.Cantidad_Pagos), 2)");		
		$this->agregarCampoVisible($funcion);		

		$this->txtConsulta = $this->GenerarConsulta();
 }
}
?>
